home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
newsgrp
/
group97b.txt
/
000016_icon-group-sender _Tue Jul 8 15:38:06 1997.msg
< prev
next >
Wrap
Internet Message Format
|
2000-09-20
|
16KB
Received: from kingfisher.CS.Arizona.EDU by cheltenham.cs.arizona.edu; Tue, 8 Jul 1997 16:38:36 MST
Received: by kingfisher.CS.Arizona.EDU; (5.65v3.2/1.1.8.2/08Nov94-0446PM)
id AA25674; Tue, 8 Jul 1997 16:38:35 -0700
To: icon-group@cs.arizona.edu
Date: 8 Jul 1997 15:38:06 -0700
From: icon-project@cs.arizona.edu
Message-Id: <5pufge$op0@kingfisher.CS.Arizona.EDU>
Organization: University of Arizona CS Department, Tucson AZ
Sender: icon-group-request@cs.arizona.edu
Reply-To: icon-project@cs.arizona.edu
Subject: Icon Programming Language FAQ
Errors-To: icon-group-errors@cs.arizona.edu
Status: RO
Archive-name: comp-lang-icon-faq
Posting-Frequency: monthly
Frequently Asked Questions About The Icon Programming Language
Last updated: December 11, 1996
This FAQ answers various questions about the Icon programming language,
ranging from what it is to how you can get it. The master copy of this FAQ
is the Web page http://www.cs.arizona.edu/icon/faq.html. Other on-line
documentation is available via the main Icon page at
http://www.cs.arizona.edu/icon/.
This FAQ is written by Ralph Griswold and Gregg Townsend, with help from
Cliff Hathaway, Clint Jeffery, and Bob Alexander.
* 1. What is Icon?
* 2. What is Icon good for?
* 3. Where did Icon come from?
* 4. What does "Icon" stand for?
* 5. On what computers does Icon run?
* 6. Who did all these implementations?
* 7. Are there other implementations in the works?
* 8. What about different versions of Icon?
* 9. Which implementations of Icon have graphics/window capabilities?
* 10. Where can I get Icon?
* 11. Where can I get documentation about Icon?
* 12. How do I get started with Icon?
* 13. What is the Icon Project?
* 14. Where can I find examples of Icon programs?
* 15. What is Idol?
* 16. How often is material in Icon's FTP area updated?
* 17. How do I stay up to date with what's going on with Icon?
* 18. Is there a users' group for Icon?
* 19. How do I get technical support?
* 20. What do I need to run Icon?
* 21. Can I build my own implementation of Icon for a new platform?
----------------------------------------------------------------------------
1. What is Icon?
Icon is a very high level general-purpose programming language with
extensive features for processing strings (text) and data structures. Icon
is an imperative, procedural language with a syntax that is reminiscent of C
and Pascal, but its semantics are at a much higher level than those
languages.
Icon has a novel expression-evaluation mechanism that integrates
goal-directed evaluation and backtracking with conventional control
structures. It has a string scanning facility for pattern matching that
avoids the tedious details usually associated with analyzing strings. Icon's
built-in data structures include sets and tables with associative lookup,
lists that can be used as vectors or stacks and queues, and records.
Icon is a strongly, though not statically, typed language. It provides
transparent automatic type conversion. For example, if an integer is used in
an operation that requires a string, the integer is automatically converted
to a string.
Several implementations of Icon have high-level graphics facilities with an
easily programmed window interface.
Icon manages storage automatically. Objects are created as needed during
program execution and space is reclaimed by garbage collection as needed.
The sizes of strings and data structures are limited only by the amount of
available memory.
2. What is Icon good for?
As a general-purpose programming language with a large computational
repertoire, Icon can be used for most programming tasks. It's at its best
when used build software tools, for processing text, and when ease of
programming is needed for experimental and research applications.
Paradoxically, Icon is used most often for short, one-shot tasks and for
very complex applications.
Icon is designed to make programming easy; it emphasizes the value of
programmer's time and the importance of getting programs to work quickly.
This explains its usefulness for prototyping as well as the apparent paradox
of applicability to simple and complex applications.
3. Where did Icon come from?
Icon is the latest in a series of high-level programming languages designed
to facilitate programming tasks involving strings and structures. The
original language, SNOBOL, was developed at Bell Telephone Laboratories in
the early 60s. SNOBOL evolved into SNOBOL4, which is still in use.
Subsequent languages were developed at The University of Arizona with
support from the National Science Foundation.
Incidentally, Icon bears little physical resemblance to SNOBOL4, although it
has similar objectives and many similar capabilities.
4. What does "Icon" stand for?
The name Icon (which is not spelled ICON) is not an acronym nor does it
stand for anything in particular, although the word "iconoclastic" was
mentioned at the time the name was chosen. The name predates the now common
use of "icon" to refer to small images used in graphical user interfaces.
This latter usage sometimes causes persons to think mistakenly that Icon is
designed to create or manipulate icons. There's not much that can be done
about this.
5. On what computers does Icon run?
The implementation of Icon is highly portable. Version 9 runs on UNIX,
MS-DOS, Windows, NT, Macintosh/MPW, VAX/VMS, the Amiga, and the Acorn
Archimedes. There are older versions for the Atari ST, IBM CMS and MVS, the
Macintosh, and OS/2.
Icon programs also are highly portable. Most Icon programs can run on any
platform that supports Icon.
6. Who did all these implementations?
The original implementation of Icon for UNIX was done at The University of
Arizona. Most of the other implementations originally were done by
volunteers scattered around the world.
It's worth noting that all implementations of Icon are based on the same
source code, which is written in C. This contributes to the portability of
Icon itself, as well as to the portability of programs written in Icon.
7. Are there other implementations in the works?
Work is constantly underway on implementations of Icon for new platforms.
Microsoft Windows and Windows NT implementations are in beta testing.
8. What about different versions of Icon?
Icon has evolved through a series of versions with improved and extended
capabilities. The latest major version number is 9. This version includes
recent changes and additions, notably in the graphics area, and runs on
UNIX, MS-DOS, Macintosh/MPW, VAX/VMS, the Amiga, and Acorn Archimedes. Other
implementations presently are at Version 8. Almost all programs that run
under Version 8 and that do not use graphics will run under Version 9.
9. Which implementations of Icon have graphics/window capabilities?
Icon's graphics facilities presently are supported on UNIX and VAX/VMS.
Windows NT and Microsoft Windows implementations that support Icon's
graphics facilities are in beta testing.
10. Where can I get Icon?
Icon is available via anonymous FTP and on the Web. For FTP, use
ftp.cs.arizona.edu
and cd /icon.
For the Web, use
http://www.cs.arizona.edu/icon/
and check out the links there.
For FTP, the directory /icon/binaries contains executable versions of Icon
for several systems, including several popular UNIX platforms. The directory
/icon/packages contains source code, test programs, related material, and,
most cases, executable binaries as well. All directories have README files
with additional information.
11. Where can I get documentation about Icon?
The definitive work on Icon is the book
The Icon Programming Language, Griswold and Griswold, third
edition, Peer-to-Peer Communications, Inc, 1996, 386 pages, ISBN
1-57398-001-3.
This book is a complete description and reference manual for Version 9 of
Icon. A technical report describes changes since that version.
There also is a book on the implementation of Icon:
The Implementation of the Icon Programming Language, Griswold and
Griswold, Princeton University Press, 1986, 336 pages, ISBN
0-691-08431-9.
This book describes the implementation as of Version 6 of Icon. Although the
implementation has changed considerably since then, the basic structure is
the same. Technical reports describing recent implementation changes are
included with copies of the book purchased from the Icon Project.
These books are available from the Icon Project.
Additional documentation is available via FTP in /icon/doc. Notable
documents are:
* IPD266: An Overview of Icon (text, PostScript, PDF)
* IPD281: Graphics/window facilities (PostScript, PDF)
* IPD278: Version 9.3 of Icon (text, PostScript, PDF)
There are manual pages for UNIX systems, and more documentation under the
Icon web page, but there is no complete on-line documentation.
The Icon Newsletter, which includes topical material about Icon and a list
of material available from the Icon Project, is published three times a year
and is available on the Web. There is a subscription fee for an on-going
subscription by postal mail. The Icon Analyst, a technically-oriented
newsletter that features articles about programming, is published six times
a year. There is a subscription fee for the Analyst. A sample copy is
available on the Web.
All back issues of both newsletters are available for purchase.
12. How do I get started with Icon?
If you're running under UNIX, check first in the /icon/binaries/unix FTP
directory to see if there is a "starter kit" for your platform. Starter kits
include executables, documentation, and other material.
Otherwise, go to the /icon/packages directory and get the appropriate
package. Packages include documentation and other material; see the README
file in that directory for more details. There is a UNIX package for
platforms that lack starter kits.
If the non-UNIX package you pick up does not contain executable files, check
/icon/binaries. You also may want to get the overview of Icon:
/icon/doc/ipd266.txt or ipd266.ps.Z. You'll find pointers to other documents
of interest in the package you pick up.
13. What is the Icon Project?
The Icon Project is a name used by the group that develops, implements,
distributes, and supports the Icon programming language.
The Icon Project is not commercial organization. It derives support from The
University of Arizona, revenue from the sale of program material and
documentation, and user contributions.
14. Where can I find examples of Icon programs?
There is a large program library for Icon. It is an excellent resource for
both new and experienced programmers. The library contains numerous examples
of how to do things with Icon. The library also provides many useful
applications, as well as hundreds of procedures that supplement Icon's
built-in repertoire.
The library, like other Icon material, is available via FTP in
/icon/library.
15. What is Idol?
Idol is an object-oriented extension to Icon that provides concepts such as
classes and multiple inheritance. Idol is written in Idol and is distributed
as part of the Icon program library. Idol runs on almost all of the
platforms that support Icon.
Additional Idol information is available from Clint Jeffery,
jeffery@ringer.cs.utsa.edu.
16. How often is material in Icon's FTP area updated?
New material is added when it's available. Established implementations
usually are updated only when there's a new version. This typically is every
year or two. The Icon program library is updated on a similar schedule.
17. How do I stay up to date with what's going on with Icon?
The best way to find out about developments related to Icon is to read the
Icon Newsletter.
You can stay up to date on the source code, which is changed much more
frequently than the version on FTP is updated, by subscribing to the source
update service, which provides a new version about twice a year.
There also is a subscription service for updates to the Icon program
library, which provides new material about twice a year.
There is on-line information about subscribing to these services.
18. Is there a users' group for Icon?
There is no official Icon users' group. The Icon Project maintains an
electronic mailing list,
icon-group@cs.arizona.edu.
Mail sent to this address is forwarded to subscribers. To subscribe (or
unsubscribe), send a message to
icon-group-request@cs.arizona.edu.
There is a gateway between icon-group and comp.lang.icon, an unmoderated
newsgroup for discussing issues related to Icon. The gateway, which
exchanges messages between the two systems, is imperfect and not under the
control of the Icon Project.
The newsgroup generally provides faster response than the mailing list, is
less intrusive, but sometimes suffers from inappropriate postings. The Icon
Project usually sends messages of interest to the Icon community to
icon-group.
19. How do I get technical support?
The Icon Project is not a commercial organization, and its capacity for
providing technical support is limited. Please use the appropriate resource
when you need assistance:
Ordering Icon Material
mail: Icon Project
Department of Computer Science
The University of Arizona
P.O. Box 210077
Tucson, Arizona 85721-0077
U.S.A.
fax: (520) 621-4246
voice: (520) 621-6613
e-mail: icon-orders@cs.arizona.edu
Getting On-Line Information and Material
web: http://www.cs.arizona.edu/icon/
ftp: ftp.cs.arizona.edu (cd /icon)
e-mail: ftpmail@cs.arizona.edu
Send a message consisting of the word help.
Assistance with Installing Icon
e-mail: icon-project@cs.arizona.edu
Bug Reports
e-mail: icon-project@cs.arizona.edu
fax: (520) 621-4246
Assistance with Programming Problems
e-mail: icon-group@cs.arizona.edu
news: comp.lang.icon
Uploading Files
ftp: ftp.cs.arizona.edu (cd /incoming)
After uploading, send e-mail to icon-project@cs.arizona.edu.
20. What do I need to run Icon?
Icon will run on most computers. Under MS-DOS, the Icon interpreter needs at
least 500 KB of application RAM to work well.
21. Can I build my own implementation of Icon for a new platform?
As mentioned above, Icon is written in C and the source code is available.
The existing implementations are testament to its portability. (A small
amount of assembly-language code is required for a context switch, but this
is only needed for an optional feature -- co-expressions -- that can be
disabled without affecting other features of Icon.)
New ports involve platform-specific configuration parameters and, in some
cases, platform-specific code. The feasibility of a new port and the amount
of work it may take depends on the platform -- its architecture, its C
compiler, and its environment.
Ports to new UNIX platforms generally are easy, although novel architectures
may present problems. Ports to new operating systems generally are more
difficult, especially if Icon's graphics facilities are implemented.
The Icon Project provides what help it can with new ports. In return, it
asks that code related to the port to be returned to the Icon Project for
inclusion in future versions of the source code for Icon. This makes the new
port available to others as well as to the porter when Icon is updated.